home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / rpg / crossfir.001 / crossfir~ / eutl / tcplib / rttmsg.c < prev    next >
C/C++ Source or Header  |  1994-09-19  |  2KB  |  102 lines

  1. #include <stdio.h>
  2. #include "tcplib.h"
  3. #include "xmalloc.h"
  4. #include "timelib.h"
  5.  
  6. const int port=8855;
  7.  
  8. ErrorFunction erf = AbortErrorFunction;
  9.  
  10. #ifdef __hppa__
  11. #define random() rand()
  12. #define srandom(x) srand(x)
  13. #endif
  14.  
  15. void Send(int npackets,int rmin,int rmax)
  16. {
  17.   int l,s;
  18.   long s2;
  19.   char *buf;
  20.   TcpSocket conn;
  21.  
  22.   buf = xmalloc(rmax);
  23.  
  24.   conn = GetConnection(NULL,port);
  25.   srandom(time(NULL)>>1 ^ getpid()<<3);
  26.   for(l=0;l<npackets;l++) {
  27.     s = random()%(rmin-rmax+1)+rmin;
  28. /*    printf("Send %d\n",l);*/
  29.     SendSizedMsg(conn,buf,s);
  30.     (void)GetSizedMsg(conn,&s2);
  31.     if (s != s2)
  32.       erf("senderror","Size Mismatch",
  33.         "Mismatch on sizes of messages, send size %d, received size %d\n",
  34.         s,s2);
  35.   }
  36.   exit(0);
  37. }
  38.   
  39. void Receive(int npackets)
  40. {
  41.   int l;
  42.   char *buf;
  43.   TcpSocket server,conn;
  44.   struct timeval start,end;
  45.   long size,total,bufsize;
  46.  
  47.   buf = NULL;
  48.   bufsize = 0;
  49.   server = BecomeServer(port);
  50.   WaitForInput(&server,1,TCPLIB_FOREVER);
  51.   if (!HasInput(server)) {
  52.     fprintf(stderr,"WaitForInput returned, but no input\n");
  53.     exit(1);
  54.   }
  55. /*  printf("Accepting Connection\n");*/
  56.   conn = AcceptConnection(server,NULL);
  57.   gettimeofday(&start,NULL);
  58.   total = 0;
  59.   for(l=0;l<npackets;l++) {
  60. /*    printf("Receive %d\n",l);*/
  61.     (void)GetSizedMsg(conn,&size);
  62.     total += size;
  63.     if (size>bufsize) {
  64.       buf = xrealloc(buf,size);
  65.       bufsize = size;
  66.     }
  67.     SendSizedMsg(conn,buf,size);
  68.   }
  69.   gettimeofday(&end,NULL);
  70.   printf("Receive and send of %d packets, total size %d took %d ms, %d bytes/ms\n",
  71.      npackets,total*2,msDiff(end,start),(total*2)/msDiff(end,start));
  72.   exit(0);
  73. }
  74.     
  75. main(int argc,char *argv[])
  76. {
  77.   int npackets,min,max;
  78.  
  79.   if ((argc == 3)&&
  80.       (strcmp(argv[1],"-r")==0)&&
  81.       ((npackets = atoi(argv[2]))>0)) {
  82.     /* Good args -- receive */
  83.   } else if ((argc == 5)&&
  84.          (strcmp(argv[1],"-s")==0) &&
  85.          ((npackets = atoi(argv[2]))>0) &&
  86.          ((min = atoi(argv[3]))>0) &&
  87.          ((max = atoi(argv[4]))>=min)) {
  88.     /* Good Args -- send */
  89.   } else {
  90.     fprintf(stderr,"Usage:%s <-r npackets|-s npackets minsize maxsize>\n",
  91.         argv[0]);
  92.     exit(1);
  93.   }
  94.   
  95.   if (strcmp(argv[1],"-s")==0)
  96.     Send(npackets,min,max);
  97.   else
  98.     Receive(npackets);
  99.   exit(1);
  100. }
  101.  
  102.